在現代密碼學中,公鑰和私鑰是非對稱加密的核心概念。這種加密方法廣泛應用於安全通訊、數位簽名和身份驗證等領域。本文將介紹公鑰和私鑰的基本概念,並以 P-384 橢圓曲線加密為例,說明其在安全數據交換中的應用。
在 P-384 橢圓曲線加密中,私鑰包含三個關鍵元素:
x
:公鑰點在橢圓曲線上的 x 座標y
:公鑰點在橢圓曲線上的 y 座標d
:用於解密和簽名的秘密值公鑰只包含兩個元素:
x
:公鑰點在橢圓曲線上的 x 座標y
:公鑰點在橢圓曲線上的 y 座標d
是私密資訊,用於生成數位簽名和解密訊息x
和 y
來進行加密和驗證簽名d
的私密性對於維護加密系統的安全至關重要print("Private key: \n", key.jwk)
JWK(keyType: JSONWebKey.JWK.KeyType.ellipticCurve, publicKeyUse: nil, keyOperations: nil, algorithm: nil, key: nil, keyID: nil, x509URL: nil, x509CertificateChain: nil, x509CertificateSHA1Thumbprint: nil, x509CertificateSHA256Thumbprint: nil, curve: Optional(JSONWebKey.JWK.CryptographicCurve.p384), e: nil, p: nil, q: nil, n: nil, dp: nil, dq: nil, qi: nil,
x: Optional(48 bytes)
,y: Optional(48 bytes)
,d: Optional(48 bytes)
)
let key = P384.KeyAgreement.PrivateKey()
print("Public key: \n", key.publicKey.jwk)
JWK(keyType: JSONWebKey.JWK.KeyType.ellipticCurve, publicKeyUse: nil, keyOperations: nil, algorithm: nil, key: nil, keyID: nil, x509URL: nil, x509CertificateChain: nil, x509CertificateSHA1Thumbprint: nil, x509CertificateSHA256Thumbprint: nil, curve: Optional(JSONWebKey.JWK.CryptographicCurve.p384), e: nil, p: nil, q: nil, n: nil, dp: nil, dq: nil, qi: nil,
x: Optional(48 bytes)
,y: Optional(48 bytes)
, d: nil)